package com.halden.mycache.support.saveStrategy.AOFSaveStrategy;

import com.halden.mycache.core.Impl.CacheValue;
import com.halden.mycache.core.Impl.MyCache;

import java.io.File;
import java.util.Map;

/**
 * @Author: halden
 * @Data:2023/2/15 16:07
 * @Description: AOF存储策略接口
 */
public interface IAOFSaveStrategy<K,V> {

    /**
     * 设置aof策略的存储模式
     * @param aofSaveMode
     * @since 0.0.5
     */
    void setSaveMode(IAOFSaveMode aofSaveMode);

    /**
     * 设置最大记录是
     * @param maxRecord
     * @since 0.0.5
     */
    void setMaxRecord(long maxRecord);

    /**
     * 开始策略，创建channel
     * @param fileName
     * @since 0.0.5
     */
    void startStrategy(String fileName);

    /**
     * 存储上下文对象
     * @param saveContext
     * @since 0.0.5
     */
    void save(SaveContext saveContext);

    /**
     * 读取持久化文件
     * @param file
     * @since 0.0.5
     */
    void readSave(File file, MyCache<K,V> myCache);

    /**
     * 关闭channel
     * @since 0.0.5
     */
    void close();
}
